/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package maquinaPila;

import instruccion.Instruccion;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.StringTokenizer;

/**
 *
 * @author Abel
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if(args.length == 2){
            ArrayList<Instruccion> codPila = new ArrayList<Instruccion>();
            if(args[1].equals("normal")){
            try{
                //Stream para leer archivo
                ObjectInputStream ficheroCodPila = new ObjectInputStream(new FileInputStream(args[0]));
                String linea = ficheroCodPila.readLine();
                linea = ficheroCodPila.readLine();
                boolean error = false;
                while(linea!=null && !error){
                    StringTokenizer token = new StringTokenizer(linea,"*");
                    if(token.countTokens() == 2){
                        String num = token.nextToken();
                        String ins = token.nextToken();
                        codPila.add(new Instruccion(ins, Integer.parseInt(num)));
                        linea = ficheroCodPila.readLine();
                    }else{
                        error = true;
                    }
                }
                //Cerramos el archivo
                ficheroCodPila.close();

                if(!error){
                    MaquinaPila interprete = new MaquinaPila();
                    interprete.cargaCodigoPrograma(codPila);
                    interprete.ejecutaCodigo();
                }
            }catch (IOException ex) {
                System.out.println(ex);
            }
            }else{
                System.out.println("Solo se permite la ejecución normal.");
            }
        }else{
            System.out.println("Numero de parametros incorrectos. Recuerde que debe introducir: \n-Nombre del fichero donde se encuentra codigo pila.\n-Modo de ejecucion (normal).");
        }
    }
}

